# #给定两个大小分别为 m 和 n 的正序（从小到大）数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
#
# #算法的时间复杂度应该为 O(log (m+n)) 。
# class Solution(object):
#     def findMedianSortedArrays(self, nums1, nums2):
#         """
#         :type nums1: List[int]
#         :type nums2: List[int]
#         :rtype: float
#         """
#         nums3=[]
#         for i in range(len(nums1)):
#             for j in range(len(nums2)):
#                 if nums1[i]<=nums2[j]:
#                     nums3.append(nums1[i])
#                     i+=1
#                 else:
#                     nums3.append(nums2[j])
#                     j+=1
#         while nums1:
#             nums3.append(nums1)
#         while nums2:
#             nums3.append(nums2)
#         return nums3
# sulution=Solution()
# nums1 = [1,3]
# nums2 = [2]
# n=sulution.findMedianSortedArrays(nums1,nums2)[len(sulution.findMedianSortedArrays(nums1,nums2))/2]
# print(n)

class Solution(object):
    def findMedianSortedArrays(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: float
        """
        # 正确合并两个有序数组
        merged = []
        i = j = 0

        # 比较两个数组的元素，按顺序添加到merged中
        while i < len(nums1) and j < len(nums2):
            if nums1[i] <= nums2[j]:
                merged.append(nums1[i])
                i += 1
            else:
                merged.append(nums2[j])
                j += 1

        # 添加剩余元素
        merged.extend(nums1[i:])
        merged.extend(nums2[j:])

        # 计算中位数
        n = len(merged)
        if n % 2 == 0:
            # 偶数长度，取中间两个数的平均值
            return (merged[n // 2 - 1] + merged[n // 2]) / 2.0
        else:
            # 奇数长度，取中间的数
            return merged[n // 2]


# 测试
solution = Solution()
nums1 = [1, 3]
nums2 = [2]
print(solution.findMedianSortedArrays(nums1, nums2))  # 输出2.0